﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Planning.Forms;
using System.Data.SqlClient;

namespace Planning.Forms
{
    public partial class mainForm : Form
    {
        #region contruct
        public mainForm()
        {
            InitializeComponent();
            usernameChamp.Text = "admin";
            pwdChamp.Text = "admin";
        }
        #endregion

        #region clics
        private void menuHelpApropos_Click(object sender, EventArgs e) {
            aproposForm form = new aproposForm();
            form.ShowDialog();
        }

        private void menuFichierParametres_Click(object sender, EventArgs e) {
            paramForm form = new paramForm();
            form.ShowDialog();
        }

        private void menuFichierQuitter_Click(object sender, EventArgs e) {
            Environment.Exit(0);
        }


        private void button1_Click(object sender, EventArgs e) {
            planningForm form = new planningForm();
            form.ShowDialog();
        }

        private void connecterBouton_Click(object sender, EventArgs e) {
            // Si les champs ne sont pas remplis
            if(usernameChamp.Text == "" || pwdChamp.Text == "") {
                MessageBox.Show("Tous les champs doivent être remplis ! ");
                return;
            }

            // Ouverture de la connexion
            using(SqlConnection connexion = new SqlConnection("user id=" + Properties.Settings.Default.userBase+ "; " +
                    "password=" + Properties.Settings.Default.pwdBase + "; " +
                    "server=" + Properties.Settings.Default.adrBase + "; " +
                    "database=" + Properties.Settings.Default.nomBase + "; " +
                    "connection timeout=30")) {
                        try {
                            // Fermeture du curseur si la connection est déja établi
                            if (connexion.State == ConnectionState.Open) {
                                connexion.Close();
                            }

                            using(SqlCommand cmd = connexion.CreateCommand()) {
                                // Prépare la requête
                                cmd.CommandText = "SELECT * FROM MEMBRE WHERE usernameMembre =  @username  AND pwdMembre = @pwd;";
                                // Valorise les paramètres selon les champs textes
                                cmd.Parameters.Add("@username", SqlDbType.NVarChar).Value = usernameChamp.Text;
                                cmd.Parameters.Add("@pwd", SqlDbType.NVarChar).Value = pwdChamp.Text;
                                // Exécute la requête
                                cmd.Connection.Open();
                                // Initialise un tableau et stocke les résultats de la requête
                                DataTable res = new DataTable();
                                res.Load(cmd.ExecuteReader());
                                if (res.Rows.Count == 0) {
                                    cmd.Connection.Close();
                                    MessageBox.Show("Erreur lors de la connexion.");
                                }
                                else if (res.Rows[0]["isFormateur"].ToString() == "1") {
                                    cmd.Connection.Close();
                                    planningForm form = new planningForm((int)res.Rows[0]["idMembre"], true);
                                    form.Show();
                                    this.Hide();
                                }
                                else if (res.Rows[0]["isFormateur"].ToString() == "0") {
                                    cmd.Connection.Close();
                                    planningForm form = new planningForm((int)res.Rows[0]["idMembre"], false);
                                    form.Show();
                                    this.Hide();
                                }
                            }
                        }catch(SqlException ex) {
                            if (Properties.Settings.Default.erreurSql) {
                                MessageBox.Show("Echec de connexion à la base de données..." + ex, "Erreur !", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                                return;
                            }
                            else {
                                MessageBox.Show("Echec de connexion à la base de données...\n\nVérifier les paramètres", "Erreur !", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                                return;
                            }
                        }
            }
        }
        #endregion
    }     
}
